package com.drg.center.entity.result;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @Author: zhangxilin
 * @Date: 2024/5/31
 */
@ApiModel("患者在院病例信息")
@Data
public class PatientCaseVO implements Serializable {

    @ApiModelProperty("病例号")
    private String caseCode;

    @ApiModelProperty("病例类型（1:低倍率病例，2:高倍率病例）")
    private Integer caseType;

    @ApiModelProperty("住院号")
    private String inpatientCode;

    @ApiModelProperty("床位号")
    private String bedCode;

    @ApiModelProperty("医生编码")
    private String doctorCode;

    @ApiModelProperty("医生姓名")
    private String doctorName;

    @ApiModelProperty("科室编号")
    private String departCode;

    @ApiModelProperty("科室名称")
    private String departName;

    @ApiModelProperty("就诊日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime visitDate;

    @ApiModelProperty("慢特病门诊科室编号")
    private String specialDepartCode;

    @ApiModelProperty("慢特病门诊科室名称")
    private String specialDepartName;

    @ApiModelProperty("慢特病就诊日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime specialVisitDate;

    @ApiModelProperty("总费用")
    private BigDecimal totalCost;

    @ApiModelProperty("医保结算费用")
    private BigDecimal settleCost;

    @ApiModelProperty("药品费用")
    private BigDecimal medicineCost;

    @ApiModelProperty("耗材费用")
    private BigDecimal consumablesCost;

    @ApiModelProperty("住院费用")
    private BigDecimal inHospitalCost;

    @ApiModelProperty("手术费用")
    private BigDecimal operationCost;

    @ApiModelProperty("麻醉费用")
    private BigDecimal anesthesiaCost;

    @ApiModelProperty("检查费用")
    private BigDecimal inspectCost;

    @ApiModelProperty("检验费用")
    private BigDecimal testCost;

    @ApiModelProperty("入院日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime inHospitalDate;

    @ApiModelProperty("医疗类型（1.住院，2.日间手术）")
    private String treatType;

    @ApiModelProperty("治疗类别（1.西医，2.中医-2.1中医；2.2.民族医，3.中西医")
    private String treatClass;

    @ApiModelProperty("入院途径（1.急诊，2.门诊，3.其他医疗机构转入，9.其他）")
    private String intoChannel;

    @ApiModelProperty("呼吸机使用时间")
    private String ventilatorUseTime;

    @ApiModelProperty("入院前颅脑损伤病人昏迷时间")
    private String beforeComaTime;

    @ApiModelProperty("入院后颅脑损伤病人昏迷时间")
    private String afterComaTime;

    @ApiModelProperty("输血品种")
    private String transBloodVariety;

    @ApiModelProperty("输血量")
    private String transBloodQuantity;

    @ApiModelProperty("输血计量单位")
    private String transBloodUnit;

    @ApiModelProperty("特级护理天数")
    private Integer premiumCareDays;

    @ApiModelProperty("一级护理天数")
    private Integer firstCareDays;

    @ApiModelProperty("二级护理天数")
    private Integer secondCareDays;

    @ApiModelProperty("三级护理天数")
    private Integer thirdCareDays;

    @ApiModelProperty("门诊中医诊断")
    private String chinaDiagnosis;

    @ApiModelProperty("门诊中医诊断疾病代码")
    private String chinaDiseaseCode;

    @ApiModelProperty("门诊西医诊断")
    private String westernDiagnosis;

    @ApiModelProperty("门诊西医诊断疾病代码")
    private String westernDiseaseCode;

    @ApiModelProperty("患者信息")
    private PatientCasePersonInfoVO personInfoVO;

    @ApiModelProperty("重症监护信息列表")
    private List<PatientCaseCustodyVO> custodyVOS;

    @ApiModelProperty("诊断信息列表")
    private List<PatientCaseDiagnosisVO> diagnosisVOS;

    @ApiModelProperty("手术操作信息列表")
    private List<PatientCaseOperationVO> operationVOS;

    @ApiModelProperty("慢特病诊断信息列表")
    private List<PatientCaseDiagnosisVO> specialDiagnosisVOS;

    @ApiModelProperty("慢特病手术操作信息列表")
    private List<PatientCaseOperationVO> specialOperationVOS;

    @ApiModelProperty("费用明细信息列表")
    private List<PatientCaseCostVO> costVOS;

    @ApiModelProperty("医嘱信息列表")
    private List<PatientCaseAdviceVO> adviceVOS;

}
